/*
Date:20210413 0:47pm
*/
class Solution {
public:

    string largestNumber(vector<int>& nums) 
    {
        vector<string>VS;
        //基于迭代器范围对每一个元素用它做一个操作，本来第三个参数是放一个与迭代范围等大小的容器的，但这里用了一个尾插迭代器，完成了一个相当漂亮的操作。
        transform(nums.begin(),nums.end(),back_inserter(VS),[](int&x){return to_string(x);});
        sort(VS.begin(),VS.end(),[](string&a,string&b){return a+b>b+a?1:0;});
        //accumulate带有三个形参：头两个形参指定要累加的元素范围，第三个形参则是累加的初值。
        //string不是基础数据类型，直接后面括号即可空
        string re=accumulate(VS.begin(),VS.end(),string());
        //只有0数字的开头是0
        return re[0]=='0'?"0":re;
    }
};